package fr.afcepf.projet.hebergeur.dao.impl;

import java.util.Collection;

import javax.inject.Named;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import org.springframework.transaction.annotation.Transactional;

import fr.afcepf.projet.hebergeur.dao.interfaces.IAbonnementDao;
import fr.afcepf.projet.hebergeur.data.Abonnement;
import fr.afcepf.projet.hebergeur.util.generic.persistence.GenericDaoJpaImpl;

@Named
@Transactional
public class AbonnementDao extends GenericDaoJpaImpl<Abonnement> implements
		IAbonnementDao {

	@Override
	public Abonnement getAboByNum(Long numero) {
		Query q = entityManager.createQuery("Select a from Abonnement a where a.numAbo = ?");
		q.setParameter(1, numero);
		return (Abonnement) q.getSingleResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Abonnement> getAboOfClient(Long numcli) {
		Query q = entityManager.createQuery("from Abonnement a where a.client.numClient = ?");
		q.setParameter(1, numcli);
		return q.getResultList();
	}

	@Override
	public boolean isNomDomaineValid(String nom) {
		Query q = entityManager.createQuery("Select d.nom from Domaine d where d.nom = ?");
		q.setParameter(1, nom);
		try{
			q.getSingleResult();
		}
		catch(NoResultException e){
			return true;
		}
		return false;
	}

}
